package applicationModels;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.uqbar.commons.model.ObservableUtils;
import org.uqbar.commons.utils.Observable;


import dominio.Zombie;

@SuppressWarnings("serial")
@Observable
public class AlmanaqueZombies implements Serializable{
	private List<Zombie> zombies;
	private List<Zombie>resultado = new ArrayList<Zombie>();
	private String zombieABuscar= "";
	private Zombie zombieSeleccionado;
	private String nombreZombieSelec;
	private int puntosDefZ;
	private int puntosAtaZ;
	
	public AlmanaqueZombies(){
		this.zombies = Juego.getInstance().getZombies();
	}
	
   public AlmanaqueZombies(List<Zombie>zs){
		this.zombies = zs;
	}
	
	public void  search() {
		List<Zombie> resultados = new ArrayList<Zombie>();
		
		for (Zombie zombie : this.zombies) {
			if (  zombie.getNombre().toLowerCase().contains(this.zombieABuscar.toLowerCase())) {
				resultados.add(zombie);
			}
		}

		this.resultado = resultados;
		this.zombieSeleccionado = null;
	}
	
	/***
	 *
	 */
	public void update(){
		this.nombreZombieSelec = zombieSeleccionado.getNombre();
		this.puntosAtaZ = zombieSeleccionado.getPuntosAtaque();
		this.puntosDefZ = zombieSeleccionado.getPuntosDefensa();
	}
	
	public void setZombieSeleccionado(Zombie zombieSeleccionado) {
		this.zombieSeleccionado = zombieSeleccionado;
		if(zombieSeleccionado == null){
			this.nombreZombieSelec  = "";
			this.puntosAtaZ = 0;
			this.puntosDefZ = 0;
		}else{
			this.update();
			ObservableUtils.forceFirePropertyChanged(this, "zombieSeleccionado", this.getZombieSeleccionado());
		}
	}
	
	/*
	public void clear() {
		this.nombre = "";
		this.numero = null;
	}*/
	
	public String getNombreZombieSelec() {
		return nombreZombieSelec;
	}

	public void setNombreZombieSelec(String nombreZombieSelec) {
		this.nombreZombieSelec = nombreZombieSelec;
	}

	public int getPuntosDefZ() {
		return puntosDefZ;
	}

	public void setPuntosDefZ(int puntosDefZ) {
		this.puntosDefZ = puntosDefZ;
	}

	public int getPuntosAtaZ() {
		return puntosAtaZ;
	}

	public void setPuntosAtaZ(int puntosAtaZ) {
		this.puntosAtaZ = puntosAtaZ;
	}

	public Zombie getZombieSeleccionado() {
		return zombieSeleccionado;
	}

	public List<Zombie> getResultado() {
		return resultado;
	}

	public void setResultado(List<Zombie> resultado) {
		this.resultado = resultado;
	}

	public String getZombieABuscar() {
		return zombieABuscar;
	}

	public void setZombieABuscar(String zombieABuscar) {
		this.zombieABuscar = zombieABuscar;
	}

	public List<Zombie> getZombies() {
		return zombies;
	}

	public void setZombies(List<Zombie> zombies) {
		this.zombies = zombies;
	}
}
